package remote.utils;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;

public class FileUtil {
    
    public static void replaceClientFile(String newVersionPath) {
        String clientFilePath = "F:\\learn\\warehousesys\\test_version.txt";  // 替换为客户端文件路径
        File clientFile = new File(clientFilePath);
        File backupFile = new File(clientFilePath.substring(0, clientFilePath.lastIndexOf(".")) + ".bak");
        
        // 检查文件是否被占用或锁定，并尝试重命名备份
        if (!clientFile.renameTo(backupFile)) {
            throw new RuntimeException("客户端文件正在使用，无法进行替换");
        }
        
        // 将新版本文件复制到客户端目录
        try {
            Files.copy(new File(newVersionPath).toPath(), clientFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
            System.out.println("客户端文件替换成功！");
            
            // 删除备份文件
            if (backupFile.exists() && !backupFile.delete()) {
                System.out.println("备份文件删除失败，请手动清理: " + backupFile.getPath());
            }
        } catch (IOException e) {
            throw new RuntimeException("文件替换失败: " + e.getMessage(), e);
        }
    }
    
    public static String getFileNameFromDisposition(String contentDisposition) {
        if (contentDisposition == null || !contentDisposition.contains("filename=")) {
            return null;
        }
        
        // 提取文件名
        String fileNamePart = contentDisposition.split("filename=")[1];
        fileNamePart = fileNamePart.replaceAll("\"", ""); // 去除引号
        return fileNamePart.trim(); // 去除空格，确保没有误差
    }
}

